package com.kai.steering.config;

import com.kai.steering.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 全局跨域配置
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
//                pathPattern: 指定需要应用CORS配置的路径模式。例如，"/**"表示所有路径。
                .allowedOrigins("*")
//        origins: 允许跨域请求的来源地址列表。可以指定一个或多个来源。如果设置为"*"，则允许所有来源的跨域请求，但这样做可能存在安全风险。
                .allowedMethods("GET", "POST", "PUT", "DELETE")
//        methods: 允许跨域请求使用的HTTP方法列表。例如，{"GET", "POST", "PUT", "DELETE"}。
                .allowedHeaders("*")
//        headers: 允许跨域响应中暴露给客户端的响应头列表。这些头通常是在前端JavaScript代码中可以通过XMLHttpRequest.getResponseHeader()访问的。
                .allowCredentials(true)
//        allowCredentials: 是否允许携带凭证（如cookies、HTTP认证及客户端SSL证明等）的跨域请求。如果设置为true，则access-control-allow-origin不能设置为"*"。
//              .maxAge(long maxAge)
//        maxAge: 预检请求的有效期，单位为秒。在这个有效期内，浏览器会缓存预检请求的响应，避免重复发送预检请求。
        ;
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
    }
}